﻿using YNTK.System.Entitys.Permission;
using System.Threading.Tasks;
using YNTK.System.Entitys.Dto.Menu;
using System.Collections.Generic;
using YNTK.System.Entitys.Dto.Permission.User;

namespace YNTK.Common.Core.Manager
{
    /// <summary>
    /// 用户管理抽象
    /// </summary>
    public interface IUserManager
    {
        /// <summary>
        /// 用户编号
        /// </summary>
        string UserId { get; }

        /// <summary>
        /// 组织id
        /// </summary>
        public string OrganizeId { get;}

        /// <summary>
        /// 机构id
        /// </summary>
        public string MechanismId { get;}

        /// <summary>
        /// 角色id
        /// </summary>
        public string RoleId { get;}

        /// <summary>
        /// 租户ID
        /// </summary>
        string TenantId { get; }

        /// <summary>
        /// 用户账号
        /// </summary>
        string Account { get; }

        /// <summary>
        /// 用户昵称
        /// </summary>
        string RealName { get; }

        /// <summary>
        /// 当前用户 ToKen
        /// </summary>
        string ToKen { get; }

        /// <summary>
        /// 是否管理员
        /// </summary>
        bool IsAdministrator { get; }

        /// <summary>
        /// 账号类型【0.平台运营人员 1.超级管理员 2.组织管理员 3.组织用户 4.第三方登录用户 5.游客用户】
        /// </summary>
        int AccountType { get;}

        /// <summary>
        /// 用户信息
        /// </summary>
        UserEntity User { get; }

        /// <summary>
        /// 获取用户登录信息
        /// </summary>
        /// <returns></returns>
        Task<TkUserInfoDto> GetUserInfo();

        /// <summary>
        /// 获取用户菜单树架构数据
        /// </summary>
        Task<List<MenuTreeDto>> GetMenuData();
    }
}
